import { getInfo, setInfo } from '@/utils/storage'

export default {
  namespaced: true,
  // 为了保证数据的独立性，写成一个函数的形式，但是返回的是对象
  // 相当于 state:{}
  state () {
    return {
      // 个人信息
      // 从本地拿值：因为一刷新vuex是丢失了，但是本地有，去本地读取，来初始化vuex的起始数据
      userInfo: getInfo()
    }
  },
  // 所有mutations里面的方法，第一个参数都是state，第二个才是形参payload
  // 封装定义修改state的方法，里面更多的是赋值
  // 定义完成之后，去页面调用，把需要存的数据（实参）拿过来给赋值给state
  mutations: {
    setUserInfo (state, obj) {
      state.userInfo = obj
      // 存一份到本地
      setInfo(obj)
    }
  },
  actions: {
    logout (context) {
      context.commit('setUserInfo', {})
      // 跨模块调用mutations 去官网查
      context.commit('cart/setCartList', [], { root: true })
    }
  },
  getters: {}

}
